home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ForCLI / 0Utils13.lha / 0Utils / PathPart.c < prev    next >
C/C++ Source or Header  |  1995-03-20  |  3KB  |  131 lines

  1.  
  2. /******************************************************************************
  3.  
  4.     MODULE
  5.     PathPart.c
  6.  
  7.     DESCRIPTION
  8.     Get one string on Commandline
  9.     and write its PathPart to StdOut
  10.  
  11.     NOTES
  12.     Kickstart 2.0+ required
  13.     compiles w/ SAS/C v6.51
  14.  
  15.     BUGS
  16.     none known
  17.  
  18.     TODO
  19.  
  20.     EXAMPLES
  21.     > pathpart ram:t/jabba.bak
  22.     ram:t/
  23.  
  24.     SEE ALSO
  25.     Suffix, FilePart
  26.  
  27.     INDEX
  28.  
  29.     HISTORY
  30.     01-08-93 b_noll created
  31.     20-02-95 b_noll restructured source
  32.     21-02-95 b_noll added version/format-prefix/offset
  33.     20-03-95 b_noll added args diagnostics
  34.  
  35.     AUTHOR
  36.     Bernd Noll, Brunnenstrasse 55, D-67661 Kaiserslautern
  37.     b_noll@informatik.uni-kl.de
  38.  
  39. ******************************************************************************/
  40.  
  41. /**************************************
  42.         Includes
  43. **************************************/
  44.  
  45. #ifndef   EXEC_LIBRARIES_H
  46. # include <exec/libraries.h>
  47. #endif /* EXEC_LIBRARIES_H */
  48.  
  49. #ifndef   CLIB_EXEC_PROTOS_H
  50. # include <clib/exec_protos.h>
  51. #endif /* CLIB_EXEC_PROTOS_H */
  52.  
  53. #ifndef   DOS_DOS_H
  54. # include <dos/dos.h>
  55. #endif /* DOS_DOS_H */
  56.  
  57. #ifndef   CLIB_DOS_PROTOS_H
  58. # include <clib/dos_protos.h>
  59. #endif /* CLIB_DOS_PROTOS_H */
  60.  
  61. #include <proto/dos.h>
  62. #include <proto/exec.h>
  63.  
  64. /**************************************
  65.      Defines & Structures
  66. **************************************/
  67.  
  68. #ifndef ABSEXECBASE
  69. #define ABSEXECBASE ((struct ExecBase **)4L)
  70. #endif
  71.  
  72. struct _arg {
  73. /* ******************** USER FORMAT ******************** */
  74. #define FORMAT "FILE/A"
  75.  
  76.     STRPTR file;
  77.  
  78. /* ******************** USER FORMAT ******************** */
  79. }; /* struct _argv */
  80.  
  81. #define MAXPATHLEN 256
  82. #define MAXLINELEN 256
  83.  
  84. #define VERSIONPREFIX    "\0$VER: "
  85. #define VERSIONOFFSET    0
  86. #define FORMATPREFIX    "\0$ARG: "
  87. #define FORMATOFFSET    7
  88.  
  89. /**************************************
  90.         Implementation
  91. **************************************/
  92.  
  93. long _main (void)
  94. {
  95.     const char* version = VERSIONPREFIX "PathPart 1.2 " __AMIGADATE__ + VERSIONOFFSET;
  96.     long retval = RETURN_FAIL;
  97.     struct ExecBase*SysBase = *ABSEXECBASE;
  98.     struct Library* DOSBase;
  99.  
  100.     if (DOSBase = OpenLibrary (DOSNAME, 37)) {
  101.     struct _arg argv = { 0 };
  102.     APTR   args;
  103.     retval     = RETURN_ERROR;
  104.     if (args = (void*)ReadArgs(FORMATPREFIX FORMAT + FORMATOFFSET, (LONG*)&argv, NULL)) {
  105. /* ******************** USER BODY ******************** */
  106.  
  107.         char * p; char c;
  108.         p = PathPart(argv.file);
  109.         c = *p; *p = 0;
  110.         retval = RETURN_WARN;
  111.         if (PutStr (argv.file) == 0) retval = RETURN_OK;
  112.         PutStr("\n");
  113.         *p = c;
  114.  
  115. /* ******************** USER BODY ******************** */
  116.         FreeArgs (args);
  117.     } /* if */
  118.  
  119.     if (retval > RETURN_WARN)
  120.         PrintFault(IoErr(), "PathPart");
  121.  
  122.     CloseLibrary (DOSBase);
  123.     } /* if */
  124.     return (retval);
  125. } /* _main */
  126.  
  127. /******************************************************************************
  128. *****  END PathPart.c
  129. ******************************************************************************/
  130.  
  131.